Don't apply GDK_HINT_RESIZE_INC to GDK_WINDOW_STATE_TILED windows
authorSimon McVittie <smcv@debian.org>
Mon, 6 Jun 2016 08:48:36 +0000 (09:48 +0100)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 25 Jul 2016 13:00:01 +0000 (09:00 -0400)
This matches the behaviour of Mutter, Metacity and traditional X11
window managers on the window manager side, and is what we want
for at least gnome-terminal. I can't think of any reason why we'd
want incremental resize in any other tiled window.

Signed-off-by: Simon McVittie <smcv@debian.org>
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=760944

https://bugzilla.gnome.org/show_bug.cgi?id=755947

gdk/wayland/gdkwindow-wayland.c
gtk/gtkwindow.c

index d548458c9bc8e5d30696da2d7ed5c6221b8458f0..e06f39654d09a1c83ab0f84d3d5a787027da3dd9 100644 (file)
@@ -1223,7 +1223,7 @@ xdg_surface_configure (void               *data,
   GdkWindow *window = GDK_WINDOW (data);
   GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
   GdkWindowState new_state = 0;
-  gboolean maximized_or_fullscreen;
+  gboolean fixed_size;
   uint32_t *p;
 
   wl_array_for_each (p, states)
@@ -1252,8 +1252,8 @@ xdg_surface_configure (void               *data,
         }
     }
 
-   maximized_or_fullscreen =
-       new_state & (GDK_WINDOW_STATE_MAXIMIZED | GDK_WINDOW_STATE_FULLSCREEN);
+   fixed_size =
+       new_state & (GDK_WINDOW_STATE_MAXIMIZED | GDK_WINDOW_STATE_FULLSCREEN | GDK_WINDOW_STATE_TILED);
 
     /* According to xdg_shell, an xdg_surface.configure with size 0x0
      * should be interpreted as that it is up to the client to set a
@@ -1263,7 +1263,7 @@ xdg_surface_configure (void               *data,
      * the client should configure its size back to what it was before
      * being maximize or fullscreen.
      */
-   if (width == 0 && height == 0 && !maximized_or_fullscreen)
+   if (width == 0 && height == 0 && !fixed_size)
     {
       width = impl->saved_width;
       height = impl->saved_height;
@@ -1274,7 +1274,7 @@ xdg_surface_configure (void               *data,
       GdkWindowHints geometry_mask = impl->geometry_mask;
 
       /* Ignore size increments for maximized/fullscreen windows */
-      if (maximized_or_fullscreen)
+      if (fixed_size)
         geometry_mask &= ~GDK_HINT_RESIZE_INC;
 
       gdk_window_constrain_size (&impl->geometry_hints,
index 42374993aaf46b4af22c43f0d7007ca1c6290d0d..9146a03b14e20d798ad4aad971a1f4b3014d1f51 100644 (file)
@@ -9912,8 +9912,8 @@ gtk_window_constrain_size (GtkWindow   *window,
   GtkWindowPrivate *priv = window->priv;
   guint geometry_flags;
 
-  /* ignore size increments for maximized/fullscreen windows */
-  if (priv->maximized || priv->fullscreen)
+  /* ignore size increments for windows that fit in a fixed space */
+  if (priv->maximized || priv->fullscreen || priv->tiled)
     geometry_flags = flags & ~GDK_HINT_RESIZE_INC;
   else
     geometry_flags = flags;